package com.example.jedis_pool.jedis_config;

import com.example.jedis_pool.JedisPoolApplication;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class Config {


    public static JedisPool JedisPool(){
        //设置连接redis的基本参数
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();

        /**
         * 其实maxTotal属性所表示的最大连接数，只是给出了一个连接数量的上限，
         * 而maxIdle属性所代表的最大空闲的连接数，才真正是业务可用的最大连接数。
         * 如果maxTotal和maxIdle二者不相等，就会涉及到连接的销毁与创建操作，会产生一定的开销，所以建议设置maxIdle=maxTotal，
         * 尽可能的避免由于频繁地创建和销毁连接而造成连接池性能下降，使连接池能够达到最佳性能
         *
         * 当连接数超过maxIdle值后，刚刚使用完的连接（刚刚空闲下来）会立即被销毁，
         * 若maxIdle与setMaxTotal相差较大，在高负载的系统中会导致频繁的创建、销毁连接，
         * 连接数在maxIdle与setMaxTotal间快速频繁波动，
         * 高负载系统的maxIdle值可以设置为与setMaxTotal相同或设置为-1(-1表示不限制)，
         * 让连接数量在minIdle与maxIdle间缓冲慢速波动

         */
        //最大空闲连接数
        jedisPoolConfig.setMaxIdle(50);
        //最大连接数
        jedisPoolConfig.setMaxTotal(50);

        JedisPool jedisPool=new JedisPool(jedisPoolConfig,"127.0.0.1",6379);
        //Jedis jedis=jedisPool.getResource();
        return jedisPool;

        // ln(jedis.ping());
        //System.out.print
        //jedis.set("jedis","hello");
        //System.out.println(jedis.get("k1"));
        //jedis.close();

    }

}
